/*
 该问题是使用循环列表来解决约瑟夫环的问题，约瑟夫环的描述如下
 传说在公元 1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的 40 个同胞
 被罗马士兵包围。犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案。
 他 们围成一个圈,从一个人开始,数到第三个人时将第三个人杀死,然后再数,直到杀光 所有人
 。约瑟夫和另外一个人决定不参加这个疯狂的游戏,他们快速地计算出了两个位 置,站在那里得以幸存。
 写一段程序将 n 个人围成一圈,并且第 m 个人会被杀掉,计算 一圈人中哪两个人最后会存活。使用循环链表解决该问题。
 使用循环列表是一个很笨的方法，但是使用数学公式法 我们的时间复杂度就是 O(N);
 */
const Link = require('../utils/Link.class.js');
myLink = new Link();
function josephus(n, m) {
    let myLink = new Link();
    let i = 2;
    myLink.head.element = 1;
    //插入链表中
    for (i; i <= n; ++i) {
        myLink.insert(i, i - 1);
    }
    while(myLink.length()>=m){
        myLink.advance(m);
        myLink.remove(myLink.show());
    }
    console.log(myLink.head.element);
    console.log(myLink.head.next.element);
   // myLink.display();
}
//该算法还有问题
josephus(33,3);
